// 云函数入口文件
const cloud = require('wx-server-sdk')

// 云函数初始化，必须放在第一个执行
cloud.init({
  // API 调用都保持和云函数当前所在环境一致
  env: cloud.DYNAMIC_CURRENT_ENV
})

// 引入数据库实例
const db = cloud.database()
const comm = db.command

/**
 * 添加操作某个品/修改某个品
 */
async function saveCar(args) {
  let res = null;
  if(args._id) {
    // 修改
    res = await db.collection("buycar").doc(args._id).update({
      data: args
    });
  }else {
    // 新增
    res = await db.collection("buycar").add({data: args});
  }
  return res;
}

/**
 * 删除某个品/多个品,args#_id必传
 */
async function deleteCar(args) {
  if(args instanceof Array) {
    return await db.collection("buycar").where({
      _id: comm.in(args)
    }).remove();
  }
  return await db.collection("buycar").doc(args._id).remove();
}

/**
 * 查询当前用户所有东西, args#openid必传
 */
async function findPageByUser(args, id) {
  console.log("查询用户："+id);
  return await db.collection("buycar").where({
    openid: comm.eq(id)
  }).get();
}

/**
 * 总数量
 * @param {*} args 
 */
async function countNum(args) {
  return await db.collection("buycar").where({
    openid: comm.eq(args)
  }).count();
}

// 云函数入口函数
exports.main = async (event, context) => {
  const wxContext = cloud.getWXContext()
  let {method, args} = event;
  let res = null;
  if(method === "saveCar") {
    args.openid = wxContext.OPENID
    res = await saveCar(args);
  }else if(method === "deleteCar") {
    res = await deleteCar(args);
  }else if(method === "findPageByUser") {
    console.log("查询用户：");
    res = await findPageByUser(args, wxContext.OPENID);
  }else if(method === "countNum") {
    res = await countNum(wxContext.OPENID);
  }
  return {
    rstData: res,
    openid: wxContext.OPENID,
    appid: wxContext.APPID,
    unionid: wxContext.UNIONID,
  }
}